package com.ruoyi.order.service;

import com.ruoyi.order.domain.Order;
import com.ruoyi.order.pojo.*;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;

/**
 * 【请填写功能名称】Service接口
 *
 * @author 1029432816@qq.com
 * @date 2020-02-25
 */
public interface IOrderService {
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    public Order selectOrderById(Long id);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param order 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<Order> selectOrderList(Order order);

    /**
     * 新增【请填写功能名称】
     *
     * @param orderDTO 【请填写功能名称】
     * @return 结果
     */
    public int insertOrder(OrderDTO orderDTO) throws ParseException;

    /**
     * 修改【订单】
     *
     * @param order 【订单】
     * @return 结果
     */
    int updateOrder(OrderDTO order);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteOrderByIds(List<Long> ids);

    /**
     * 删除【请填写功能名称】信息
     *
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    public int deleteOrderById(Long id);

    /**
     * 获取编号
     *
     * @return
     */
    String getNumber(Long companyId) throws ParseException;

    /**
     * 通过id查询订单信息
     *
     * @param id
     * @return
     */
    OrderVO getOrderVOById(Long id);

    /**
     * 分页查询订单数据
     *
     * @param orderListDTO
     * @return
     */
    List<OrderVO> list(OrderListDTO orderListDTO);

    /**
     * 导出消毒统计报表
     *
     * @param disinfectionReportDTO
     * @param response
     */
    void getDisinfectionStatisticsReport(DisinfectionReportDTO disinfectionReportDTO, HttpServletResponse response) throws Exception;

    /**
     * 获取最新的订单记录
     *
     * @return
     */
    OrderVO getLatestOrder();

    /**
     * 获取业务量上报表
     *
     * @param businessVolumeReportDTO
     * @param response
     */
    void getBusinessVolumeReport(BusinessVolumeReportDTO businessVolumeReportDTO, HttpServletResponse response) throws IOException;

    /**
     * 获取用药量上报表
     *
     * @param businessVolumeReportDTO
     * @param response
     * @throws IOException
     */
    void getDoseReport(BusinessVolumeReportDTO businessVolumeReportDTO, HttpServletResponse response) throws IOException;

    /**
     * 获取业务量收费报表
     *
     * @param businessVolumeReportDTO
     * @param response
     * @throws IOException
     */
    void getTrafficChargeReport(BusinessVolumeReportDTO businessVolumeReportDTO, HttpServletResponse response) throws IOException;
}
